<?php
/**
 * Created by b17
 * 3/2/12 6:29 PM
 */

class Admin_IssueController extends G4T_CrudController
{
    const ISSUES_PER_PAGE = 20;

    public function indexAction()
    {
        $page = intval($this->_getParam('page'));
        $total = $this->manager->getTotal();
        $this->view->total = $total;

        $offset = $this->_getOffset($page, self::ISSUES_PER_PAGE);
        $this->manager->setOffset($offset);
        $this->manager->setLimit(self::ISSUES_PER_PAGE);
        $issues = $this->manager->getList();
        $this->view->issues = $issues;

        $this->displayPaginantor($total, $page, self::ISSUES_PER_PAGE);
    }

    /**
     * Возвращает менеджер для работы с сущностью.
     *
     * @return \Managers\CrudManager
     */
    protected function getManager()
    {
        return new \Managers\Issue();
    }

    /**
     * Возвращает строителя форм для создания форм.
     * @return \G4T\Form\FormBuilder
     */
    protected function createFormBuilder()
    {
        $formBuilder = \G4T\Form\FormBuilder::createFormBuilder(\Managers\Issue::TABLE)
            ->addField('token', 'hash')
            ->addField('name', 'string', array('class' => 'text-input medium-input', 'label' => 'Имя'))
            ->addField('date', 'date', array('label' => 'Дата публикации', 'class' => 'text-input small-input'))
            ->addField('isPublished', 'boolean', array('label' => 'Опубликован'))
            ->addField('photoUrl', 'image', array('required' => false, 'label' => 'Рисунок'))
            ->addField('submit', 'submit', array('class' => 'btn btn-primary', 'label' => 'Сохранить'));
        return $formBuilder;
    }

    /**
     * Переход при не найденой сущности.
     * @param $id
     */
    protected function redirectWhenNotFound($id = null)
    {
        $this->_flashMessenger->addMessage('Журнал не найден.', Lib_Flash::ERROR, Lib_Flash::LATER);
        $this->_redirect('/admin/issue');
    }

    /**
     * Переход при успешном изменении объекта.
     * @param $entity
     */
    protected function redirectWhenSuccess($entity = null)
    {
        $this->_flashMessenger->addMessage('Сохранено.', Lib_Flash::NOTICE, Lib_Flash::LATER);
        $this->_redirect('/admin/issue');
    }
}
